package main

import (
	"fmt"
	"strconv"
	"strings"
)

func main() {
	//lenTest("hello 北京")
	//runeTest("hello 北京")
	//
	//atoi("123")
	//atoi("zasd")
	//itoa(123543)
	//str2bytes("asdasd")
	//bytes2str([]byte{97, 41, 52, 66, 105})
	//intFormat(123123, 2)
	//intFormat(123123, 16)
	//checkStr2InStr1("asdfasd", "1asdfasd")
	//str2CountInStr1("sujyhdgfajklsdfhik", "yash")
	//str1EqualsStr2("asd", "ASD")
	//str2FirstInStr1("asjikdyfgksjdf", "sjd")
	//str2LastInStr1("dvc_ppp_gbd_ppp", "ppp")
	//replaceStr("asddasasdasdj", "as", "qwe", -1)
	//splitStr("asddasasdasdj", "as")
	//toLower("13ADD")
	//toUpper("13asD")
	//trimSpace("           asd  asd             ")
	//trim("a       as  a dasda      a     ", "a ")
	//trimLeft("a       asd  a asda      a     ", "a ")
	//trimRight("a       asd   a   asda      a     ", "a ")
	hasPrefix("asdasdzxcasdfas", "asd")
	hasSuffix("asdasdzxcasdfas", "fas")
}

func lenTest(str string) {
	fmt.Println(len(str))
}

func runeTest(str string) {
	r := []rune(str)
	for i := 0; i < len(r); i++ {
		fmt.Printf("%c\n", r[i])
	}
	for _, v := range r {
		fmt.Printf("%c\n", v)
	}
}

func atoi(str string) {
	n, err := strconv.Atoi(str)
	if err != nil {
		fmt.Println("error:", err)
	} else {
		fmt.Println("n:", n)
	}
}

func itoa(num int) {
	str := strconv.Itoa(num)
	fmt.Println("str:", str)

}

func str2bytes(str string) {
	bytes := []byte(str)
	fmt.Println("str2bytes:", bytes)
}

func bytes2str(bytes []byte) {
	str := string(bytes)
	fmt.Println("bytes2str:", str)
}

func intFormat(num int64, base int) {
	fmt.Printf("%d 对应的 %d进制结果为：%s \n", num, base, strconv.FormatInt(num, base))
}

func checkStr2InStr1(str1 string, str2 string) {
	fmt.Println("check result: ", strings.Contains(str1, str2))
}

func str2CountInStr1(str1 string, str2 string) {
	fmt.Printf("%s 中有 %d 个 %s\n", str1, strings.Count(str1, str2), str2)
}

func str1EqualsStr2(str1 string, str2 string) {
	fmt.Println("result", strings.EqualFold(str1, str2))
}

func str2FirstInStr1(str1 string, str2 string) {
	fmt.Printf("%s 第一次出现在 %s 的 %d 位置", str2, str1, strings.Index(str1, str2))
}

func str2LastInStr1(str1 string, str2 string) {
	fmt.Printf("%s 最后一次出现在 %s 的 %d 位置", str2, str1, strings.LastIndex(str1, str2))
}

func replaceStr(str string, str2 string, str3 string, n int) {
	fmt.Println("原始字符串", str)
	fmt.Println("被替换的字符串", str2)
	fmt.Println("替换成的字符串", str3)
	fmt.Println("希望替换的个数", n)
	fmt.Println("替换的结果", strings.Replace(str, str2, str3, n))
}

func splitStr(str string, str2 string) {
	fmt.Println("原始字符串", str)
	fmt.Println("分隔符", str2)
	var result []string = strings.Split(str, str2)
	fmt.Println("分割后的结果", result)
	fmt.Println("分割后的结果的长度", len(result))
}

func toLower(str string) {
	fmt.Printf("%s 全部转小写得 %s\n", str, strings.ToLower(str))
}

func toUpper(str string) {
	fmt.Printf("%s 全部转大写得 %s\n", str, strings.ToUpper(str))
}

func trimSpace(str string) {
	fmt.Printf("[%s] 去除两边的 空格 得 [%s]\n", str, strings.TrimSpace(str))
}

func trim(str1 string, str2 string) {
	fmt.Printf("[%s] 去除两边的 [%s] 得 [%s]\n", str1, str2, strings.Trim(str1, str2))
}
func trimLeft(str1 string, str2 string) {
	fmt.Printf("[%s] 去除左边的 [%s] 得 [%s]\n", str1, str2, strings.TrimLeft(str1, str2))
}
func trimRight(str1 string, str2 string) {
	fmt.Printf("[%s] 去除右边的 [%s] 得 [%s]\n", str1, str2, strings.TrimRight(str1, str2))
}

func hasPrefix(str string, prefix string) {
	fmt.Println("result", strings.HasPrefix(str, prefix))
}
func hasSuffix(str string, suffix string) {
	fmt.Println("result", strings.HasSuffix(str, suffix))
}
